From: Keir Fraser Date: Wed, 27 May 2009 14:55:29 +0000 (+0100) Subject: x86: Fix 32-bit build. X-Git-Tag: archive/raspbian/4.8.0-1+rpi1~1^2~13864 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success/%22http:/www.example.com/cgi/success?a=commitdiff_plain;h=a36045afa893df1700a1ebe0668f1c5bce1d3db8;p=xen.git x86: Fix 32-bit build. Signed-off-by: Keir Fraser --- diff --git a/xen/arch/x86/hvm/svm/svm.c b/xen/arch/x86/hvm/svm/svm.c index 7aceec8b80..13ef5d0325 100644 --- a/xen/arch/x86/hvm/svm/svm.c +++ b/xen/arch/x86/hvm/svm/svm.c @@ -1186,34 +1186,6 @@ static void svm_vmexit_do_rdtsc(struct cpu_user_regs *regs) hvm_rdtsc_intercept(regs); } -static void svm_dump_regs(const char *from, struct cpu_user_regs *regs) -{ - printk("Dumping guest's current registers at %s...\n", from); - printk("Size of regs = 0x%lx, address = %p\n", - sizeof(struct cpu_user_regs), regs); - - printk("r15 = 0x%016"PRIx64", r14 = 0x%016"PRIx64"\n", - regs->r15, regs->r14); - printk("r13 = 0x%016"PRIx64", r12 = 0x%016"PRIx64"\n", - regs->r13, regs->r12); - printk("rbp = 0x%016"PRIx64", rbx = 0x%016"PRIx64"\n", - regs->rbp, regs->rbx); - printk("r11 = 0x%016"PRIx64", r10 = 0x%016"PRIx64"\n", - regs->r11, regs->r10); - printk("r9 = 0x%016"PRIx64", r8 = 0x%016"PRIx64"\n", - regs->r9, regs->r8); - printk("rax = 0x%016"PRIx64", rcx = 0x%016"PRIx64"\n", - regs->rax, regs->rcx); - printk("rdx = 0x%016"PRIx64", rsi = 0x%016"PRIx64"\n", - regs->rdx, regs->rsi); - printk("rdi = 0x%016"PRIx64", rsp = 0x%016"PRIx64"\n", - regs->rdi, regs->rsp); - printk("error code = 0x%08"PRIx32", entry_vector = 0x%08"PRIx32"\n", - regs->error_code, regs->entry_vector); - printk("rip = 0x%016"PRIx64", rflags = 0x%016"PRIx64"\n", - regs->rip, regs->rflags); -} - static void svm_vmexit_ud_intercept(struct cpu_user_regs *regs) { struct hvm_emulate_ctxt ctxt; @@ -1310,7 +1282,6 @@ asmlinkage void svm_vmexit_handler(struct cpu_user_regs *regs) if ( unlikely(exit_reason == VMEXIT_INVALID) ) { svm_dump_vmcb(__func__, vmcb); - svm_dump_regs(__func__, regs); goto exit_and_crash; } diff --git a/xen/arch/x86/x86_emulate/x86_emulate.c b/xen/arch/x86/x86_emulate/x86_emulate.c index e6a94455d5..d221f0076c 100644 --- a/xen/arch/x86/x86_emulate/x86_emulate.c +++ b/xen/arch/x86/x86_emulate/x86_emulate.c @@ -3599,6 +3599,7 @@ x86_emulate( cs.attr.bytes = 0xc9b; /* G+DB+P+S+Code */ ss.attr.bytes = 0xc93; /* G+DB+P+S+Data */ +#ifdef __x86_64__ if ( in_longmode(ctxt, ops) ) { cs.attr.fields.db = 0; @@ -3618,11 +3619,12 @@ x86_emulate( _regs.eflags &= ~(msr_content | EFLG_RF); } else +#endif { rc = ops->read_msr(MSR_STAR, &msr_content, ctxt); fail_if(rc != 0); - _regs.rcx = _regs.rip; + _regs.ecx = _regs.eip; _regs.eip = (uint32_t)msr_content; _regs.eflags &= ~(EFLG_VM | EFLG_IF | EFLG_RF); } @@ -3783,11 +3785,11 @@ x86_emulate( rc = ops->read_msr(MSR_SYSENTER_EIP, &msr_content, ctxt); fail_if(rc != 0); - _regs.rip = msr_content; + _regs.eip = msr_content; rc = ops->read_msr(MSR_SYSENTER_ESP, &msr_content, ctxt); fail_if(rc != 0); - _regs.rsp = msr_content; + _regs.esp = msr_content; break; } @@ -3846,8 +3848,8 @@ x86_emulate( rc = ops->write_segment(x86_seg_ss, &ss, ctxt); fail_if(rc != 0); - _regs.rip = _regs.rdx; - _regs.rsp = _regs.rcx; + _regs.eip = _regs.edx; + _regs.esp = _regs.ecx; break; }